#include"main.h"

// 初始化队列。初始化成功返回0；初始化失败返回1。
int init_queue(Queue ** q){
	*q=(Queue *)malloc(sizeof(Queue));
	(*q)->size = 0;
	if((*q) != NULL)return 1;
	else return 0;
}

// 在队列q的尾巴上增加一个元素，其值为value。增加成功，返回0；增加失败，返回1
int enqueue (Queue * q, int value){
	if(q->size <QUEUE_MAX_SIZE){
		q->elements[q->size]=value;
		q->size++;
		return 0;
	}
	return 1;
} 

// 从队列q上摘取（去掉）一个元素，将其值放入value中。摘取成功，返回0；摘取失败，返回1。
int dequeue(Queue* q, int *value){
	if(is_empty(q)){
		*value = q->elements[0];
		int sum=q->size-1;
		for(int i=0;i<sum;i++){
			q->elements[i]=q->elements[i+1];
		}
		q->size--;
		return 0;
	}
	return 1;
}

// 获取队列q的第一个元素，但是并不去掉该元素，并将该值放入value中。获取成功返回0；获取失败，返回1。 
int first(Queue * q, int * value){
	if(is_empty(q)){
		*value=q->elements[0]; 	
		return 0;
	}
	return 1;
}

// 判断队列q是否为空。为空，返回0；不为空，返回1。 
int is_empty(Queue * q){
	if(q->size==0)return 0;
	else return 1;
} 

// 返回队列q中的元素个数。 
int size(Queue * q){
	return q->size;
}

int main(){
	Queue *q;
	int value;
	init_queue(&q);
	printf("is empyty? %d \n", is_empty(q));
	
	for (int i = 0; i < 7; i++)
	{
		scanf("%d",&value);
		enqueue(q, value);
	}

	printf("size : %d \n", size(q));
	
	first(q, &value);
	printf("first : %d\n", value);
	
	dequeue(q, &value);
	printf("dequeue : %d\n", value);
	
	printf("size : %d\n", size(q));
	return 0;
	
}
